package com.hspedu.Arrays;

import java.util.Arrays;
import java.util.List;

/**
 * @Author Stringzhua
 * @Date 2024/3/9 21:06
 * description:
 */
public class ArraysMethod02 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 90, 123, 567};
        //binarySearch通过二分搜索法进行查找,要求必须排好
        //1.如果使用binarySearch 二叉查找
        //2.要求该数组是有序的,如果该数组是无序的,不能使用binarySearch
        //3.如果数组中不存在该元素,就返回-1
        //   return -(low + 1);  // key not found.
        int index = Arrays.binarySearch(arr, 94);
        System.out.println("index = " + index);//-4


        //copyOf数组元素的复制
        //1.从arr数组中,拷贝arr.length个元素到newArr数组中
        //2.如果拷贝的长度>arr.length,就在新数组的后面插入null
        //3.如果拷贝的长度<0,就抛出异常
        // Exception in thread "main" java.lang.NegativeArraySizeException
        //4.该方法的底层使用的是  System.arraycopy(original, 0, copy, 0,
        //                         Math.min(original.length, newLength));
        Integer[] newArr = Arrays.copyOf(arr, arr.length);
        System.out.println(Arrays.toString(newArr));


        //fill 数组元素的填充
        Integer[] num = {9, 3, 2};
        //1.使用99去填充num数组,可以理解成是替换原来的元素
        Arrays.fill(num, 99);
        System.out.println("===num数组填充后===");
        System.out.println(Arrays.toString(num));

        //equals,比较两个数组的元素是否完全一致
        //1.如果arr和arr2数组的元素完全一致,则返回true
        //2.如果不是完全一致,就返回false
        Integer[] arr2 = {1, 2, 90, 567};
        boolean equals = Arrays.equals(arr, arr2);
        System.out.println("equals = " + equals);

        //asList 可以将一组值转换成list
        //1.asList方法会将(2, 3, 4, 5, 6, 1)数据转成一个List集合
        //2.返回的 asList编译类型 List(接口)
        //3.asList的运行类型 java.util.Arrays$ArrayList
        //静态内部类  private static class ArrayList<E> extends AbstractList<E>
        //        implements RandomAccess, java.io.Serializable
        List<Integer> asList = Arrays.asList(2, 3, 4, 5, 6, 1);
        System.out.println("asList = " + asList);
        System.out.println("asList的运行类型"+asList.getClass());//asList的运行类型class java.util.Arrays$ArrayList
    }
}
